# coding: utf-8

from scrapy.contrib.spiders.crawl import CrawlSpider
import scrapy
from ..items import Yi163Item
import bs4


class Yi163Spider(CrawlSpider):
    name = 'yi163spider'
    allowed_domains = ['house.163.com']
    start_urls = ['http://bj.house.163.com/']

    def parse(self, response):
        citybox = [
            ['北京', 'http://xf.house.163.com/bj/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['长春', 'http://xf.house.163.com/cc/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['成都', 'http://xf.house.163.com/cd/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-BJ'],
            ['重庆', 'http://xf.house.163.com/cq/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['东莞', 'http://xf.house.163.com/dg/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['东营', 'http://xf.house.163.com/dy/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['恩施', 'http://xf.house.163.com/es/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['佛山', 'http://xf.house.163.com/fs/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['广州', 'http://xf.house.163.com/gz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['贵阳', 'http://xf.house.163.com/gy/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['哈尔滨', 'http://xf.house.163.com/heb/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['海南', 'http://xf.house.163.com/hn/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html'],
            ['杭州', 'http://xf.house.163.com/hz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-4-1-0-0-0-1.html'],
            ['合肥', 'http://xf.house.163.com/hf/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['淮安', 'http://xf.house.163.com/ha/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html'],
            ['济南', 'http://xf.house.163.com/jn/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['嘉兴', 'http://xf.house.163.com/jx/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['昆明', 'http://xf.house.163.com/km/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['兰州', 'http://xf.house.163.com/lz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['临沂', 'http://xf.house.163.com/linyi/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html'],
            ['柳州', 'http://xf.house.163.com/liuzhou/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['洛阳', 'http://xf.house.163.com/luoyang/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['南京', 'http://xf.house.163.com/nj/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['南宁', 'http://xf.house.163.com/nn/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html'],
            ['宁波',
             'http://xf.house.163.com/nb/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html?keyword=#lpk-qy-qyzf'],
            ['齐齐哈尔', 'http://xf.house.163.com/qiqihaer/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['秦皇岛', 'http://xf.house.163.com/qhd/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['青岛', 'http://xf.house.163.com/qd/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['上海', 'http://xf.house.163.com/sh/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['深圳', 'http://xf.house.163.com/sz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['郴州', 'http://xf.house.163.com/suzhou/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['苏州', 'http://xf.house.163.com/suzhou/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['宿州', 'http://xf.house.163.com/sq/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['沈阳', 'http://xf.house.163.com/sy/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['太原', 'http://xf.house.163.com/ty/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['泰安', 'http://xf.house.163.com/taian/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['泰州', 'http://xf.house.163.com/tz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['芜湖', 'http://xf.house.163.com/wuhu/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['武汉', 'http://xf.house.163.com/wh/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['温州', 'http://xf.house.163.com/wz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['厦门', 'http://xf.house.163.com/fj/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['西安', 'http://xf.house.163.com/xa/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['邢台', 'http://xf.house.163.com/xingtai/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html#lpk-qy-qyzf'],
            ['烟台', 'http://xf.house.163.com/yt/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-0-1-0-0-0-1.html'],
            ['盐城', 'http://xf.house.163.com/yancheng/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['郑州', 'http://xf.house.163.com/zz/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],
            ['中山', 'http://xf.house.163.com/zs/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html#FC-0-LPK'],
            ['珠海', 'http://xf.house.163.com/zh/search/0-0-0-0-0-0-0-0-0-1-0-0-0-0-0-1-1-0-0-0-1.html'],

        ]
        data = response.body
        soup = bs4.BeautifulSoup(data, 'lxml')
        city_box = soup.select('.down')[0]
        citylist = city_box.find_all('a')

        #
        # 匹配整理好的城市
        #

        for child in citylist:
            city = child.get_text()
            city_id = child.get('href').replace('http://', '').replace('.house.163.com/', '')
            citys = {
                'website': '网易', 'web_url': 'house.163.com',
                'city': city, 'city_id': city_id
            }
            for cols in citybox:
                if city == cols[0]:
                    city_url = cols[1]
                    print(city, city_id, city_url)
                    yield scrapy.Request(city_url,callback=self.parse_city_estate, meta=citys)

    def parse_city_estate(self, response):
        meta = response.meta
        data = response.body
        city = meta['city']
        city_id = meta['city_id']
        soup = bs4.BeautifulSoup(data, 'html.parser')
        estatesbox = soup.find_all('span', class_='title')


        for child in estatesbox:
            estate = child.a.get_text()
            estate_url = 'http://xf.house.163.com' + child.a.get('href')
            estate_id = child.a.get('href').split('/')[2].replace('.html#lpk-lpxxzc-ss', '')
            areas = child.find_next_siblings('ul')
            area = ''
            if areas:
                for cols in areas:
                    col = cols.find_all('li')[1].get_text().replace('位置：', '').replace('查看地图', '').strip()
                    area = col.split(' ')[0]

            item = Yi163Item()
            item['website'] = meta['website']
            item['web_url'] = meta['web_url']
            item['city'] = city
            item['city_id'] = city_id
            item['area'] = area
            item['estate'] = estate
            item['estate_id'] = estate_id
            item['estate_url'] = estate_url
            yield item

        next_pages = soup.select('.pager_box > a ')[-2]
        next = next_pages.get_text().strip()
        next_url = 'http://xf.house.163.com'+next_pages.get('href')
        if next == '下一页 >':
            yield scrapy.Request(next_url,
                                 callback=self.parse_city_estate,
                                 meta=meta)
